
package com.xtsoft.platform.base.system.repository;
/*
*    上海信拓信息技术有限公司 Koala企业综合信息管理系统
*    Copyright (C) 2010-2015 ShangHai XinTuo Software Inc.
*/


import com.xtsoft.core.repository.GenericRepository;
import com.xtsoft.platform.base.system.domain.SysOrganize;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface SysOrganizeRepository extends GenericRepository<SysOrganize,String> {

	public SysOrganize findByOrganizeName(String organizeName);
	

	/**
	 * 查找 所有机构  
	 * 非 虚拟组织 
	 * 非第三方评估机构 
	 * 非停用状态
	 * @param globalYes
	 * @return
	 */
	@Query(value="select a from SysOrganize a where a.organizeType <> 5 and a.state=?1")
	public List<SysOrganize> findByState(Integer globalYes);

	
	/**
	 * 
	 * <p> 获取指定NodeId值的企业/部门  </p>  
	 * @param nodeId
	 * @return
	 * @return SysOrganize
	 * @throws  
	 * @author defencez  
	 * @date 2022年2月22日 
	 * @time 下午12:27:40
	 */
	public SysOrganize findByNodeId(String nodeId);
	/**
	 * 
	 * <p> 根据节点编码、状态获取企业  </p>  
	 * @param nodeId
	 * @param state
	 * @return
	 * @return SysOrganize
	 * @throws  
	 * @author defencez  
	 * @date 2022年2月22日 
	 * @time 下午1:00:14
	 */
	public SysOrganize findByNodeIdAndState(String nodeId, Integer state);
	
	/**
	 * 
	 * <p> 根据父节点编码、状态获取企业列表  </p>  
	 * @param parentNodeId
	 * @param state
	 * @return
	 * @return List<SysOrganize>
	 * @throws  
	 * @author defencez  
	 * @date 2022年2月22日 
	 * @time 下午1:19:23
	 */
	public List<SysOrganize> findByParentNodeIdAndState(String parentNodeId, Integer state);
	/**
	 * 
	 * <p> 根据父节点获取企业集合  </p>  
	 * @param parentNodeId
	 * @return
	 * @return List<SysOrganize>
	 * @throws  
	 * @author defencez  
	 * @date 2022年2月22日 
	 * @time 下午1:52:29
	 */
	public List<SysOrganize> findByParentNodeId(String parentNodeId);
	
	/**
	 * 
	 * <p> 根据id和状态查到</p>  
	 * @param organizeId
	 * @param state
	 * @return
	 * @return List<SysOrganize>
	 * @throws  
	 * @author wangyalin 
	 * @date 2019年12月9日 
	 * @time 下午12:07:41
	 */
	public SysOrganize findByOrganizeIdAndState(String organizeId,Integer state);
	/**
	 * 
	 * <p> 查找本层中NodeId的最大值  </p>  
	 * @param parentNodeId
	 * @return
	 * @return String
	 * @throws  
	 * @author defencez  
	 * @date 2021年5月19日 
	 * @time 上午9:22:33
	 */
	@Query(value="select max(u.nodeId) from SysOrganize u where u.parentNodeId = ?1")
	public String findMaxNodeId(String parentNodeId);


	/**
	 * 
	 * <p> 查询最大的排序号  </p>  
	 * @param parentNodeId
	 * @return
	 * @return Integer
	 * @throws  
	 * @author litao
	 * @date 2022年2月23日 
	 * @time 上午11:46:29
	 */
	@Query(value="select max(u.serialNo) from SysOrganize u where u.parentNodeId = ?1")
	public Integer findSerialNoByParentNodeIdMax(String parentNodeId);


	public List<SysOrganize> findBySysOrganizeTypeOrganizeTypeId(String id);

}